package com.atguigu.tingshu.order.interceptor.impl;

import com.atguigu.tingshu.order.context.SaveOrderStrategyContext;
import com.atguigu.tingshu.order.interceptor.OrderHandlerInterceptor;
import com.atguigu.tingshu.order.strategy.SaveOrderStrategy;
import com.atguigu.tingshu.vo.order.OrderInfoVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * 保存订单任务类
 */
@Service
@Slf4j
public class SavaOrderOrderHandlerInterceptor implements OrderHandlerInterceptor {

    @Override
    public OrderInfoVo sbumitOrderRequestProcess(OrderInfoVo orderInfoVo) {

        /**
         * 在保存订单数据之前，需要让用户选择支付方式，不同的支付方式执行的业务逻辑代码是不一样，因此这一部分的代码可以使用cel设计模式进行改造
         */
        SaveOrderStrategy saveOrderStrategy = SaveOrderStrategyContext.getSaveOrderStrategy(orderInfoVo.getPayWay());
        return saveOrderStrategy.saveOrder(orderInfoVo) ;

    }

    @Override
    public int sort() {
        return 3;
    }

}
